package com.colorlight.cloud.gateway.api.annotation.method;

import com.colorlight.cloud.common.exception.ParameterException;

import static com.colorlight.cloud.common.model.BaseResultCodeEnum.PARTITION_OBJECT_IS_NOT_INTEGER_EXCEPTION;

/**
 * @author Demon
 * @date 29/3/2024  上午10:46
 * {@link com.colorlight.cloud.gateway.api.annotation.percent}
 */
public class PercentInvoke {
	/**
	 *  扩充后属性转化为真实属性
	 * @param o  扩充后属性（为了保留精度但是不使用float） 乘以divisor 的数
	 * @param divisor 最大范围
	 * @author Demon
	 * @date 28/3/2024/上午10:49
	 * @return 百分比
	 **/
	public static Object percentInvokeFromProto(Object o, int divisor) {
		
		if (null == o) {
			return null;
		}
		if (!(o instanceof Integer)) {
			throw new ParameterException(PARTITION_OBJECT_IS_NOT_INTEGER_EXCEPTION);
		}
		
		float i = (int) o * 1F;
		return (i / divisor);
	}
	
	
	/**
	 * 将小数 转为 整数
	 * @param o Float
	 * @param divisor 转化变量
	 * @author Demon
	 * @date 19/3/2024/下午5:06
	 * @return 转化后的属性 为Integer
	 *
	 **/
	
	public static Object percentInvokeToProto(Object o, int divisor) {
		if (null == o) {
			return null;
		}
		if (!(o instanceof Float)) {
			throw new ParameterException(PARTITION_OBJECT_IS_NOT_INTEGER_EXCEPTION);
		}
		float i = (float) o;
		return  (int)( i * divisor);
	}
}
